/*
    1. 读取字符串，统计字符'o'的总数，找到不大于它的最大偶数 maxOCount
    2. 从每个字符位置开始，进行环形遍历，计算包含最多 maxOCount 个'o'的最长子串长度
    3. 遇到超出 maxOCount 的'o'时，结束该段统计，更新最大长度
*/

#include <stdio.h>      // 提供输入输出函数，如 printf、scanf
#include <string.h>     // 提供字符串处理函数，如 strlen
#include <stdlib.h>     // 提供通用工具函数，如 malloc、abs 等

#define MAX 100000      // 字符串最大长度限制

int main() {
    // step 1# 变量初始化
    char string[MAX];       // 输入字符串
    int maxLen = 0;         // 记录最终的最长合法长度
    int maxOCount = 0;      // 字符'o'的最大偶数个数限制

    // step 2# 读取字符串
    scanf("%s", string);    // 输入字符串

    // step 3# 统计字符串中'o'的总数
    for(int i = 0; string[i]; i++) {
        char ch = string[i];
        if (ch == 'o') maxOCount++;     // 统计'o'的数量
    }

    // step 4# 取不超过 maxOCount 的最大偶数（满足条件：最多出现该数量个'o'）
    if (maxOCount % 2 != 0) maxOCount--;

    int len = strlen(string);   // step 5# 获取字符串长度

    // step 6# 枚举每个字符作为起点，进行环形遍历
    for(int i = 0; string[i]; i++) {
        int curLen = 0;         // 当前起点下最长合法长度
        int curOCount = 0;      // 当前起点下'o'的数量
        int curPos = i;         // 当前字符位置
        char ch = string[i];    // 当前字符
        int curCount = 0;       // 已经遍历的字符数量（避免无限循环）

        // step 7# 开始从当前位置进行环形遍历
        while (1) {
            if (ch == 'o') curOCount++;     // 当前字符是'o'，增加计数

            // step 8# 若'o'数量超过最大允许且当前字符是'o'，结束统计
            if (curOCount > maxOCount && ch == 'o') {
                maxLen = maxLen > curLen ? maxLen : curLen;  // 更新最大长度
                break;
            } else {
                curLen++;       // 当前合法子串长度+1
                curCount++;     // 总共环形遍历的字符数+1
            }

            // step 9# 如果环了一整圈，说明整个字符串都满足条件
            if (curCount == len) {
                maxLen = len;
                break;
            }

            // step 10# 向后移动一位，继续遍历（环形处理）
            curPos = (curPos + 1) % len;
            ch = string[curPos];
        }
    }

    // step 11# 输出结果
    printf("%d\n", maxLen);
    return 0;
}
